package mx.gob.imss.reiman.clientes.service.impl;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Service;

import mx.gob.imss.reiman.clientes.model.Persona;
import mx.gob.imss.reiman.clientes.model.mensajes.Mensaje;
import mx.gob.imss.reiman.clientes.model.mensajes.MensajeIMP;
import mx.gob.imss.reiman.clientes.service.CargaService;

/**
 * 
 * @author Alberto Dzul Calvillo
 * @version 1.0
 * 
 */
@Service("cargaPAService")
public class CargaPAServiceImpl implements CargaService {
	public List<Mensaje> carga(String archivo) throws IOException {
		List<Mensaje> mensajes = new ArrayList<Mensaje>();
		File file = new File(archivo);
		@SuppressWarnings("resource")
		BufferedReader entrada = new BufferedReader(new FileReader(file));
		String linea = "";
		while (file.exists() && (linea = entrada.readLine()) != null) {
			MensajeIMP mensaje = new MensajeIMP();
			mensaje.setPersona(construyePersona(linea.trim()));
			mensajes.add(mensaje);
		}
		return mensajes;
	}

	private Persona construyePersona(String mensaje) {
		String datos[] = mensaje.split(",");
		Persona persona = new Persona();
		int i = 1;
		for (String tmp : datos) {
			setDato(persona, i, tmp.trim());
			i++;
		}
		return persona;
	}

	private void setDato(Persona persona, int posicion, String tmp) {
		switch (posicion) {
		case 1:
			persona.setNss(tmp);
			return;
		case 2:
			persona.setCurp(tmp);
			return;
		case 3:
			persona.setRfc(tmp);
			return;
		case 4:
			persona.setNombre(tmp);
			return;
		case 5:
			persona.setApellidoPaterno(tmp);
			return;
		case 6:
			persona.setApellidoMaterno(tmp);
			return;
		case 7:
			persona.setTelefono(tmp);
			return;
		case 8:
			persona.setSexo(tmp);
			return;
		case 9:
			persona.setFechaNacimiento(tmp);
			return;
		case 10:
			persona.setIdMunicipio(tmp);
			return;
		case 11:
			persona.setCp(tmp);
			return;
		case 12:
			persona.setCalle(tmp);
			return;
		case 13:
			persona.setNumeroExterior(tmp);
			return;
		case 14:
			persona.setNumeroInterior(tmp);
			return;
		case 15:
			persona.setColonia(tmp);
			return;
		case 16:
			persona.setFechaAccion(tmp);
			return;
		case 17:
			persona.setUnidad(tmp);
			return;
		case 18:
			persona.setAgregadoMedico(tmp);
			return;
		case 19:
			persona.setCveTipoMensaje(tmp);
			return;
		case 20:
			persona.setCveTipoServicio(tmp);
			return;
		case 21:
			persona.setCveRFC(tmp);
			return;
		case 22:
			persona.setNumAplicacion(tmp);
			return;
		}
		return;
	}
}